package psn.zjk.performance;

import java.lang.instrument.Instrumentation;
import java.util.HashMap;
import java.util.concurrent.ForkJoinPool;

/**
 * @Description
 * @author zhangjk
 * @CREATE_TIME 2021/6/23 15:12
 */
public class MethodInvokeMonitor {

    //JVM 首先尝试在代理类上调用以下方法
    public static void premain(String agentArgs, Instrumentation inst) {
        System.out.println("进入代理方法1");
        inst.addTransformer(new MyTransformer());
        System.out.println("============");
    }

    //如果代理类没有实现上面的方法，那么 JVM 将尝试调用该方法
    public static void premain(String agentArgs) {
        System.out.println("进入代理方法2");
    }

    public static void main(String[] args) {
        ForkJoinPool forkJoinPool = ForkJoinPool.commonPool();
        forkJoinPool.submit(() -> {},new HashMap<>());
    }

}